package nextel.ruta.rms;

import nextel.ruta.bean.RutaPorNombreBean;
import pe.com.nextel.rms.GestorRMS;
import pe.com.nextel.rms.Persistente;
import java.util.Stack;
import javax.microedition.rms.RecordEnumeration; 
import nextel.util.mvc.BuscarListener;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.Iterator;
import pe.com.nextel.util.List;
import pe.com.nextel.util.StringUtils;

/**
 *
 * @author eespinoza
 */
public class RMSRutaPorNombre extends GestorRMS {

    private RutaPorNombreBean nombreRuta = new RutaPorNombreBean();
//    private boolean available = false;

    public RMSRutaPorNombre() {
        super("INDXNOMRUTA");
    }

    protected Persistente createObjectBean() {
        return nombreRuta;
    }

    public synchronized void buscarPorNombreRutas(String nombreRuta, BuscarListener listener) throws Exception {
        //#debug
//       System.out.println("rms.buscarPorNombreRutas");

        try {

            abrirRS();

            RecordEnumeration en = enumerateRecords();
            List lista = new ArrayList();
            int i = 0;
//            StringUtils.getStaticsMemoria();

            while (en.hasNextElement() && !listener.esFinalizadaBusqueda( )) {


                int id = en.nextRecordId();

               // System.out.println("id="+id);

                Iterator it = getRecordList(id).iterator();

                while (it.hasNext() && !listener.esFinalizadaBusqueda( )) {

                    RutaPorNombreBean bean = (RutaPorNombreBean) it.next();

//                    System.out.println("bean.getNombreRuta() " + bean.getNombreRuta());
//                    System.out.println("nombreRuta " + nombreRuta);
                    
                    if (bean.getNombreRuta().indexOf(nombreRuta) > -1 ) {
                        lista.add(bean);
                        i++;
                    }

                    bean = null;
                    
                    if ((i % 5 == 0) && !lista.isEmpty()) {
                        listener.agregarElementosVectorDatos(lista);
                        lista.clear();
                        System.gc();
                    }
                }
                
                if (!lista.isEmpty()) {
                    listener.agregarElementosVectorDatos(lista);
                    lista.clear();
                    System.gc();
                }
            }

//            StringUtils.getStaticsMemoria();

            if (listener != null) {
                listener.finalizo();
            }

            lista = null;
            System.gc();

        } finally {

            cerrarRS();
        }
    }
 
}
